
# With this supoort, we could have flexibility when passing arguments to method
# What's most important, we could use this sugar to create named return object
# This is a good facility, be careful to use.
# underlying strucuture usually do not need that extent of flexibility
# Time to use python create some big stuff. Website or any other things else.

class agg(object):

    def __init__(self, **keywords):
        for (k, v) in keywords.items():
            self.__dict__[k] = v

def f(p):
    print p.a
    print p.b
    print p.c
    return agg(d=1, e=2, hello="Hello.")

def wrap(fun, ex, *a, **b):
    try:
        fun(*a, **b)
    except Exception as ex:
        eh(ex)
    

if __name__ == "__main__":
    ret = f(agg(a=1, b=2, c=3))
    print ret.hello

    
    
